home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1995-11-25 | 8.6 KB | 261 lines |
- IMPLEMENTATION MODULE Bestellungen;
-
-
-
- FROM BlRscInc IMPORT
- BESTLDIA , (* TREE *) BB1, BB2, BB3, BB4, BB5,
- BB6, BB7, LB1, LB2, LB3, LB4, LB5,
- LB6 , LB7, BK1 , BK2, BK3, BK4, BK5,
- BK6, BK7, LK1, LK2, LK3, LK4, LK5,
- LK6 , LK7 , CNCLBEST, OKBESTLG ,BSDTITEL,SCHULDEN, (* OBJECTs in TREE #5 *)
- EKB1, EKB2, EKB3, EKB4, EKB5, EKB6, EKB7, EKL1 ,
- EKL2, EKL3, EKL4, EKL5, EKL6, EKL7 ; (* OBJECTs in TREE #3 *)
-
-
- FROM EasyDialog IMPORT DoDialog,GetText,SetText,SetObjectFlags;
-
- FROM ConvertStr IMPORT StrToInt,IntToStr,LongIntToStr;
- FROM Strings IMPORT IsEmptyStr,EqualStr,LeftStr,SubStr,ClearStr,Length,
- Concat;
- FROM InOut IMPORT WriteString,WriteLn,WriteInt,Done,ReadInt,
- OpenOutput,CloseOutput;
-
- FROM LongInOut IMPORT WriteLongInt;
- FROM SYSTEM IMPORT ADDRESS, VAL ;
- FROM AES IMPORT FormAlert,ResourceGetAddr;
-
-
- FROM PreisErfassung IMPORT EinKaufsPreis, EKPreis,GTString;
-
- VAR BestllDiaAddr : ADDRESS;
- IdxTable : ARRAY[EKB1..EKL7] OF RECORD
- TextIdx,
- MengenIdx :INTEGER;
- END(*RECORD*);
- SchuldenBeimFax : LONGINT;
- k : INTEGER [EKB1..EKL7];
-
- TYPE Art =(Bestelldialog,Abrechnungsdialog);
- (*************************************************************************)
- PROCEDURE ComputeBestellung;
- BEGIN
- SchuldenBeimFax:=SchuldenBeimFax+
- VAL(LONGINT,(EinKaufsPreis[k].Preis * (EinKaufsPreis[k].NeuBezogeneKaesten+EinKaufsPreis[k].ZuBezahlendeKaesten)));
- END ComputeBestellung;
- PROCEDURE SchuldenAnFax():LONGINT;
- BEGIN
- SchuldenBeimFax:=0D;
- FOR k:=EKB1 TO EKL7 DO
- ComputeBestellung;
- END(*FOR*);
- RETURN SchuldenBeimFax;
- END SchuldenAnFax;
-
- PROCEDURE DruckOK():BOOLEAN;
- VAR s: ARRAY [0..127] OF CHAR;
- formret : INTEGER;
- BEGIN
- s :='[2][Druck in Ordnung?|Ja = Druck OK|Nein = Druck wiederholen][ Ja | Nein ]';
- formret:=FormAlert(1,s);
- RETURN formret=1
- END DruckOK;
-
-
- (*************************************************************************)
- PROCEDURE B2str(VAR MengenStr: ARRAY OF CHAR);
- VAR HilfsStr: ARRAY [0..2] OF CHAR;
- OK : BOOLEAN;
-
- BEGIN
- IntToStr(EinKaufsPreis[k].NeuBezogeneKaesten,3,HilfsStr,OK);
- MengenStr[0]:=HilfsStr[1]; MengenStr[1]:=HilfsStr[2];
- END B2str;
-
- PROCEDURE A2str(VAR MengenStr : ARRAY OF CHAR);
- VAR HilfsStr: ARRAY [0..2] OF CHAR;
- OK : BOOLEAN;
-
- BEGIN
- IntToStr(EinKaufsPreis[k].NeuBezogeneKaesten+EinKaufsPreis[k].ZuBezahlendeKaesten,3,HilfsStr,OK);
- MengenStr[0]:=HilfsStr[1]; MengenStr[1]:=HilfsStr[2];
- ComputeBestellung;
- END A2str;
-
-
- PROCEDURE ZeichneDialog(welchen:Art);
- VAR MengenStr: ARRAY [0..2] OF CHAR;
- OK : BOOLEAN;
- WertZuStr: PROCEDURE (VAR ARRAY OF CHAR);
- i : INTEGER;
- SchuldenStr1:ARRAY [0..6] OF CHAR;
- SchuldenStr2:ARRAY [0..7] OF CHAR;
- TitelStr: ARRAY [0..21] OF CHAR;
-
- BEGIN
- IF welchen=Bestelldialog THEN
- TitelStr:='Vom Fax geliefert :';
- SetText(BSDTITEL,BestllDiaAddr,TitelStr);
- SetObjectFlags(SCHULDEN,BestllDiaAddr,80H);
- WertZuStr:=B2str
- ELSE
- TitelStr:='Abbrechnung mit Fax :';
- SetText(BSDTITEL,BestllDiaAddr,TitelStr);
- SetObjectFlags(SCHULDEN,BestllDiaAddr,08H);
- WertZuStr:=A2str
- END(*IF*);
- FOR k:=EKB1 TO EKL7 DO
- IF EinKaufsPreis[k].Preis#0 THEN
- SetText(IdxTable[k].TextIdx ,BestllDiaAddr,EinKaufsPreis[k].Getraenk);
- WertZuStr(MengenStr);
- SetText(IdxTable[k].MengenIdx ,BestllDiaAddr,MengenStr);
- SetObjectFlags(IdxTable[k].MengenIdx ,BestllDiaAddr,8);
- ELSIF EinKaufsPreis[k].TreeIndex#0 THEN
- SetObjectFlags(IdxTable[k].MengenIdx ,BestllDiaAddr,0);
- END(*IF*);
- END(*FOR*);
- IF welchen=Abrechnungsdialog THEN
- LongIntToStr(SchuldenBeimFax,7,SchuldenStr2,OK);
- (*SchuldenBeimFax:=0D;*)
- FOR i:=0 TO 6 DO
- SchuldenStr1[i]:= SchuldenStr2[i+1]
- END(*FOR*);
- SetText(SCHULDEN,BestllDiaAddr,SchuldenStr1);
- END(*IF*);
- END ZeichneDialog;
-
-
-
- PROCEDURE Abrechnung;
- VAR DiaReturn : INTEGER;
- OK : BOOLEAN;
- Bezahlt : INTEGER;
- MengenStr : ARRAY[0..1] OF CHAR;
- (***************)
- GezahltAnFax : LONGINT;
- (************)
- PROCEDURE WriteAbbr;
- BEGIN
- WriteInt(Bezahlt,4); WriteString(' * ');
- WriteString(EinKaufsPreis[k].Getraenk);
- WriteInt((Bezahlt*EinKaufsPreis[k].Preis) DIV 100,5);WriteString('.');
- WriteInt((Bezahlt*EinKaufsPreis[k].Preis) MOD 100,2);WriteString(' DM');WriteLn;
-
- END WriteAbbr;
-
-
-
- BEGIN
- SchuldenBeimFax:=0D;
- MengenStr:='00';
- ResourceGetAddr(0,BESTLDIA,BestllDiaAddr);
- ZeichneDialog(Abrechnungsdialog);
- DiaReturn:=DoDialog(BestllDiaAddr,BK1);
- GekaufteBierFlaschen:=0; GekaufteLimoFlaschen:=0;
- AusgabenFuerBierKauf:=0D; AusgabenFuerLimoKauf:=0D;
- GezahltAnFax :=0D;
- IF DiaReturn=OKBESTLG THEN
- REPEAT
- OpenOutput('PRN:');
-
- WriteLn;
- FOR k:=EKB1 TO EKB7 DO
- IF EinKaufsPreis[k].Preis#0 THEN
- GetText(IdxTable[EinKaufsPreis[k].TreeIndex].MengenIdx ,BestllDiaAddr,MengenStr);
- StrToInt(MengenStr,Bezahlt,OK);
- GezahltAnFax:=GezahltAnFax+VAL(LONGINT, Bezahlt*EinKaufsPreis[k].Preis);
- AusgabenFuerBierKauf:= AusgabenFuerBierKauf+VAL(LONGINT, Bezahlt*EinKaufsPreis[k].Preis);
- GekaufteBierFlaschen:=GekaufteBierFlaschen+(Bezahlt*EinKaufsPreis[k].FlaschenProKasten);
- WriteAbbr;
- EinKaufsPreis[k].ZuBezahlendeKaesten:= EinKaufsPreis[k].ZuBezahlendeKaesten-Bezahlt;
- END(*IF*);
- END(*FOR*);
- FOR k:=EKL1 TO EKL7 DO
- IF EinKaufsPreis[k].Preis#0 THEN
- GetText(IdxTable[EinKaufsPreis[k].TreeIndex].MengenIdx ,BestllDiaAddr,MengenStr);
- StrToInt(MengenStr,Bezahlt,OK);
- GezahltAnFax:=GezahltAnFax+VAL(LONGINT, Bezahlt*EinKaufsPreis[k].Preis);
- AusgabenFuerLimoKauf:=AusgabenFuerLimoKauf+VAL(LONGINT, Bezahlt*EinKaufsPreis[k].Preis);
- GekaufteLimoFlaschen:= GekaufteLimoFlaschen +(Bezahlt*EinKaufsPreis[k].FlaschenProKasten);
- WriteAbbr;
- EinKaufsPreis[k].ZuBezahlendeKaesten:= EinKaufsPreis[k].ZuBezahlendeKaesten-Bezahlt;
- END(*IF*);
- END(*FOR*);
- SchuldenBeimFax:=SchuldenBeimFax-GezahltAnFax;
- WriteString(' Gesammtbetrag: ');
- WriteLongInt(GezahltAnFax DIV 100D,6);WriteString('.');
- WriteLongInt(GezahltAnFax MOD 100D,2);WriteString(' DM ');WriteLn;
- WriteString(' Schulden: ');
- WriteLongInt(SchuldenBeimFax DIV 100D,6);WriteString('.');
- WriteLongInt(SchuldenBeimFax MOD 100D,2);WriteString(' DM ');WriteLn;
- CloseOutput;
- UNTIL DruckOK();
- END(*IF*);
- END Abrechnung;
-
-
-
-
- PROCEDURE Bestellung;
- VAR DiaReturn : INTEGER;
- OK : BOOLEAN;
- MengenStr : ARRAY[0..1] OF CHAR;
-
-
- BEGIN
- MengenStr:='00';
- ResourceGetAddr(0,BESTLDIA,BestllDiaAddr);
- ZeichneDialog(Bestelldialog);
- DiaReturn:=DoDialog(BestllDiaAddr,BK1);
- IF DiaReturn=OKBESTLG THEN
- FOR k:=EKB1 TO EKL7 DO
- IF EinKaufsPreis[k].Preis#0 THEN
- GetText(IdxTable[EinKaufsPreis[k].TreeIndex].MengenIdx ,BestllDiaAddr,MengenStr);
- StrToInt(MengenStr,EinKaufsPreis[k].NeuBezogeneKaesten,OK);
- END(*IF*);
- END(*FOR*);
- END(*IF*);
- END Bestellung;
-
- BEGIN
- SchuldenBeimFax:=0D;
- AusgabenFuerBierKauf:=0D;
- AusgabenFuerLimoKauf:=0D;
- GekaufteBierFlaschen:=0;
- GekaufteLimoFlaschen:=0;
-
-
- (***********************Make Index Table********************)
- (* Um vom Index auf die dazugehörigen Editfelder zu kommen *)
- (***********************************************************)
- IdxTable[EKB1].TextIdx :=BB1;
- IdxTable[EKB1].MengenIdx:=BK1;
- IdxTable[EKB2].TextIdx :=BB2;
- IdxTable[EKB2].MengenIdx:=BK2;
- IdxTable[EKB3].TextIdx :=BB3;
- IdxTable[EKB3].MengenIdx:=BK3;
- IdxTable[EKB4].TextIdx :=BB4;
- IdxTable[EKB4].MengenIdx:=BK4;
- IdxTable[EKB5].TextIdx :=BB5;
- IdxTable[EKB5].MengenIdx:=BK5;
- IdxTable[EKB6].TextIdx :=BB6;
- IdxTable[EKB6].MengenIdx:=BK6;
- IdxTable[EKB7].TextIdx :=BB7;
- IdxTable[EKB7].MengenIdx:=BK7;
-
- IdxTable[EKL1].TextIdx :=LB1;
- IdxTable[EKL1].MengenIdx:=LK1;
- IdxTable[EKL2].TextIdx :=LB2;
- IdxTable[EKL2].MengenIdx:=LK2;
- IdxTable[EKL3].TextIdx :=LB3;
- IdxTable[EKL3].MengenIdx:=LK3;
- IdxTable[EKL4].TextIdx :=LB4;
- IdxTable[EKL4].MengenIdx:=LK4;
- IdxTable[EKL5].TextIdx :=LB5;
- IdxTable[EKL5].MengenIdx:=LK5;
- IdxTable[EKL6].TextIdx :=LB6;
- IdxTable[EKL6].MengenIdx:=LK6;
- IdxTable[EKL7].TextIdx :=LB7;
- IdxTable[EKL7].MengenIdx:=LK7;
-
- END Bestellungen.
-